/*
 *    This program is free software; you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation; either version 2 of the License, or
 *    (at your option) any later version.
 *
 *    This program is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this program; if not, write to the Free Software
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *    2010 year
 *    Author: Michael Khromov aka MikeDM (Mike D'Morto)
 *    E-Mail: mikedmorto@gmail.com
 */
#include "dusersmng.h"
#include "ui_dusersmng.h"

Dusersmng::Dusersmng(bool mode , QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dusersmng)
{
    ui->setupUi(this);
    // добавляем кнопку минимизации окна.
    this->setWindowFlags(Qt::WindowMinMaxButtonsHint);

    // ловим режим работы.
    this->mode=mode;
    // подготавливаем диалог
    this->setWindowTitle(APP_NAME+tr(" - Users managment"));


}

Dusersmng::~Dusersmng()
{
    delete ui;
}

bool Dusersmng::dstart(){
    // включаем шаг 1 запрос пользователей
    this->Step=Dusersmng::GetUsersList;
    this->ui->lbl_wait->setText(tr("Getting users list.\nWait until the end of the query."));
    // прячем кнопку.
    this->ui->btn_wait->hide();
    this->ui->sw->setCurrentIndex(2);
    // отправляем сигнал получения списка юезроф
    emit this->sigGetUsersList();
    return this->exec();
}

void Dusersmng::slotBTN(){
    qDebug()<<"BTN";
    switch(this->Step){
    case Dusersmng::GetUsersListE:
        this->reject();
        break;
    default:
        break;
    }
}
void Dusersmng::reject(){
    qDebug()<<"REJECT";
    switch(this->Step){
    case Dusersmng::GetUsersListE:
        // произошла ошибка получения списка юзеров, а значит закрываем диалог нахер.
        this->accept();
        break;
    case Dusersmng::GetUsersListA:
        // сейчас показываем список пользователей. значит можно закрыться
        this->accept();
        break;
    default:
        break;
    }
}

// принимаем список юзеров
void Dusersmng::setUserslist(QList<Ui::Suser> userslist){
    //
    this->Step=Dusersmng::GetUsersListA;
    // предварительно подчищаем итемы, ибо память потечет
    for(int i = this->ui->tw_users->rowCount(); i > 0 ; i--){
        QTableWidgetItem * aa;
        aa = this->ui->tw_users->takeItem(i,1);
        delete aa;
        aa = this->ui->tw_users->takeItem(i,0);
        delete aa;
    }

    this->ui->tw_users->setRowCount(userslist.size());
    for(int i = 0; i < userslist.count(); i ++ ){

        QTableWidgetItem * aa = new QTableWidgetItem(userslist.at(i).username);
        this->ui->tw_users->setItem(i,0,aa);
        aa = new QTableWidgetItem(userslist.at(i).info);
        this->ui->tw_users->setItem(i,1,aa);
    }

    this->ui->sw->setCurrentIndex(0);
    this->ui->tw_users->setFocus();
}

// получить список юзеров не получилось
void Dusersmng::setUsersListE(){
    this->Step=Dusersmng::GetUsersListE;
    // рисуем фэйл и кнопачку закрытия диалога
    this->ui->lbl_wait->setText(tr("Error get users list."));
    this->ui->btn_wait->setText(tr("Close"));
    this->ui->btn_wait->setVisible(true);
    this->ui->btn_wait->setFocus();

}

